package com.newtouch.bxzs.business.product.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.newtouch.bxzs.business.product.mapper.UserMapper;
import com.newtouch.bxzs.business.product.model.UserBO;
import com.newtouch.bxzs.business.product.service.UserService;
import com.newtouch.bxzs.common.base.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 接口规范demo的service实现类
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2020年12月14日</td>
 * <td>Amour</td>
 * <td>Create</td>
 * </tr>
 * </table>
 * 
 * @author Amour
 * 
 * @version 1.0.0
 * @since 1.0.0
 */
@Service
public class UserServiceImpl implements UserService {

	@Autowired
	private UserMapper userMapper;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.newtouch.bxzs.business.product.service.UserService#getUserByName(java.lang.
	 * String)
	 */
	@Override
	public List<UserBO> getUserByName(String name) {
		List<User> users = new ArrayList<>();
		if (StringUtils.isEmpty(name)) {
			/* 没有入参的时候，不需要构建QueryWrapper，直接使用null */
			users = userMapper.selectList(null);
		} else {
			/* 根据查询条件生成QueryWrapper，使用eq方法拼接查询条件，先写字段名，再写参数 */
			users = userMapper.selectList(new QueryWrapper<User>().eq("name", name));
		}
		/* 没有查询结果时直接返回null */
		if (users.isEmpty()) {
			return null;
		}
		/* 接口返回参数一律使用BO返回，不允许使用实体直接返回 */
		List<UserBO> userBOs = new ArrayList<>();
		for (User user : users) {
			UserBO userBO = new UserBO();
			/* 使用工具直接进行实体与BO的复制转换，注意字段名及类型需保持一致 */
			BeanUtil.copyProperties(user, userBO);
			userBOs.add(userBO);
		}
		return userBOs;
	}

}
